int getNum(n) {
  return n;
}

void main() {
  print(getNum(10));

  print('--------自执行方法-------');

  ((int n) {
    print('自执行方法--$n');
  })(12);

  print('--------方法递归-------');

  var sum = 1;
  fn(int j) {
    sum *= j;
    print('sum--$sum--$j');
    if (j == 1) {
      return;
    }
    fn(j - 1);
  }

  fn(5);

  print(sum);

  print('--------递归 求1-100的和-------');

  var sum2 = 0;
  fn2(int n) {
    sum2 += n;
    if (n == 1) {
      return;
    }
    fn2(n - 1);
  }

  fn2(100);
  print(sum2);

  print('--------闭包-------');

  fn3(int n) {
    var a = n;
    return () {
      a++;
      print(a);
    };
  }

  var b = fn3(120);
  b();
  b();
  b();
  b();
}
